Toki Tori 2 ~ trigger
Particle Emitter
// all multi-byte types in this file are stored in big-endian
// this was presumably written with the WiiU CPU architecture in mind
// this documentation was made from the Toki Tori 2 Steam Beta,
// and does not match the final release version.
// I don't know if I'll find time to upadte this.
struct particle_unknown_1_t {
short unknown_1;
short unknown_2;
float unknown_3;
char unknown_4;
};
struct particle_unknown_2_t {
unsigned int colors[4];
float unknown_2;
float unknown_3;
char unknown_4;
};
struct particle_emitter_t {
short unknown_1;
float unknown_2;
float unknown_3;
float unknown_4;
char unknown_5;
short unknown_6;
short texture_name_len;
char texture_name[texture_name_len]; // no null-terminator
short unknown_9;
short unknown_11_len;
particle_unknown_1_t unknown_11[unknown_11_len];
char unknown_12;
float unknown_13;
float unknown_14;
float accel_x_a;
float accel_x_b;
float accel_y_a;
float accel_y_b;
char blendmode; // 0 = alpha, 1 = additive, 2 = subtractive
char unknown_20;
float unknown_21;
float unknown_22;
float unknown_23;
char unknown_24;
float unknown_25;
char unknown_26;
float velocity_x_a;
float velocity_x_b;
float velocity_y_a;
float velocity_y_b;
float lifespan_a;
float lifespan_b;
float scale_a;
float scale_b;
float unknown_35;
float unknown_36;
char unknown_37;
float unknown_38;
float unknown_39;
float unknown_40;
float unknown_41;
float unknown_42;
float unknown_43;
float unknown_44;
float unknown_45;
float unknown_46;
float unknown_47;
short unknown_48;
short unknown_49;
char unknown_50;
char has_unknown_52;
// if (unknown_52 != 0)
particle_unknown_2_t unknown_52;
// where a variable has _a and _b, the particle gets a value randomly selected between those two.
// for example, a particle's velocity_x would be (velocity_x_a + (rand(0.0, 1.0) * (velocity_x_b - velocity_x_a)))
};
struct trigger_file_t {
unsigned char png_style_header[9]; // 89 50 54 52 47 0D 0A 1A 0A
int unknown_1; // always 5?
short name_len;
char name[name_len]; // no null-terminator
int unknown_2;
short num_emitters;
particle_emitter_t emitters[num_emitters];
};